Subject: IBIS BIRD49 - Add Model Dynamic Clamps

From: [email-masked] (Bob Ross)
Date: Thu, 2 Apr 98 14:00:26 PST

Dear IBIS folks:

BIRD49 follows BIRD48 with a specific implementation for the Dynamic
Clamp functionality of BIRD45.1.  The [Add Model Spec] keyword is used
to define the typ, min, and max threshold rules formated using 4 columns.

The [GND Clamp] and [POWER Clamp] keywords replace the new keywords
[Dynamic GND Clamp] and [Dynamic POWER Clamp] in BIRD45.1.  The [GND Pulse
Table] and [POWER Pulse Table] keyword are introduced.

BIRD49 is derived from BIRD45.1 directly, but with changes corresponding
to the Add Model construction methology and also in accordance with some
comments on BIRD45.1.

Bob Ross
Interconnectix/Mentor Graphics

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

BIRD ID#:       49
ISSUE TITLE:    Add Model Dynamic Clamps
REQUESTER:      Neven Orhanovic, Bob Ross, Mentor G., Arpad Muranyi, Intel
DATE SUBMITTED: 4/2/98
DATE ACCEPTED BY IBIS OPEN FORUM: Pending

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

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 "on" switching of the dynamic clamps can be triggered by an input signal 
crossing a triggering threshold or by some external clock. The "off" switching 
can be triggered by a built in timer or an external clock.

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

STATEMENT OF THE RESOLVED SPECIFICATIONS:

The dynamic clamp functionality is added in the new Section 6a:

| Dynamic Clamp:
|
| This section introduces the dynamic clamp add model functionality.  Two
| new keywords [GND Pulse Table] and [Power Pulse Table] are defined.  Then
| and example is provided for a complete dynamic clamp model.
|
|=============================================================================
|     Keyword:  [GND Pulse Table], [POWER Pulse Table]
|    Required:  No
| Description:  Used to dynamically specify the offset voltage of added [GND
|               Clamp] and [POWER Clamp] tables when the [Model] adds the
|               dynamic clamp functionality.
|
| Usage Rules:  Each [GND Pulse Table] and [POWER Pulse Table] keyword
|               introduces a table of time vs. voltage 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).  These
|               time/voltage points must start and end at the same value.
|
|               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.  Only one [GND Pulse Table] and
|               one [POWER Pulse Table] are allowed per model.
|
|               A pulse table must include the entire waveform; i.e., the
|               first entry (or entries) in a voltage column must be equal
|               to the last entry.  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 [GND Pulse Table] and [POWER Pulse Table] keywords are used.
|              The subparameter under [Add Model Spec] for V_trigger_f checks
|              when the pulse at the die passes the trigger voltage.  At that
|              time, the [GND Pulse Table] is invoked and the 
|              dynamic [GND Clamp] shifts its reference by the specified
|              offset voltage.  Similarily, the V_trigger_f subparameter gives
|              the voltage of the rising edge of the die at which the [POWER
|              Pulse Table] is invoked and the dynamic [POWER Clamp] table 
|              begins shifting its reference by the specified offset voltage.
|
|              A dynamic clamp is modeled by a V-I curve that is offset 
|              (translated) along the voltage axis with the voltage waveform 
|              given in the [GND Pulse Table] or [POWER Pulse Table] section
|              The resulting dynamic V-I table can be expressed as
|     
|                   I = f( V - V_pulse(t) ),
|
|              where V_pulse(t) is the offset voltage waveform described by 
|              the pulse table and f(V) is the resulting V-I curve 
|              of the clamp in its off state, corresponding to the data 
|              given in the [GND Clamp] or [POWER Clamp] keyword.
|               
|              For example, once the voltage on the clamp crosses the
|              triggering threshold V_trigger_f, the [GND Pulse Table] data
|              is used to offset the V-I curve obtained 
|              from the [GND Clamp] section. The dependence of the offset
|              pulse on the clamp voltage is illustrated below.
|
|                                 V_trigger_f
|
|            o o o o           
|                    o
|                     o
|                      o -------
|                      |o       ^ 
|                      | o      | V_trigger_f
|                      |  o     v               time
|                      |    o o-------------------->
|                      |
|                      |              
|                      |             [GND Pulse Table]
|                      |      Clamp offset voltage vs. time.
|                      |
|                      |             o o o o    
|                      |            o        o     
|                      |           o           o  
|                      |          o              o 
|                      |         o                 o 
|                      |        o                    o          time
|                      o o o o o                       o o o -------->
|
|                      ^
|                      |_  Pulse data is used from this moment on
|                          to offset the V-I curve.
|
| The V_trigger_r and [POWER Pulse Table] operate in a similar manner.
| However, offset voltage which fall into the normal operation region are
| given by negative voltage values.
|
|------------------------------------------------------------------------------
|
| Example Dynamic_clamp Model with both dynamic GND and POWER clamps:
|
[Model]       Dynamic_Clamp_1
Model_type    Dynamic_clamp
C_comp        0 0 0
|
[Add Model 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
|
[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:

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.

|==============================================================================
| Keywords:    [Dynamic GND Clamp], [Dynamic POWER Clamp]
| Required:    No.
| Description: Describes ground and power clamps that are switched on and off 
|              dynamically.
|
| Subparameters: V_trigger, V_trigger_min, V_trigger_max
|
| Usage Rules: The [Dynamic GND Clamp] and [Dynamic PWR Clamp] specifications 
|              contain three subparameters and two keywords. The subparameters 
|              (V_trigger, V_trigger_min, V_trigger_max) specify the threshold 
|              clamp voltage value that causes the clamp to begin switching 
|              from "off" to "on" according to the [Pulse Table] section. 
|              These values correspond to the typical, weak (slow), and strong 
|              (fast) situations. The [Pulse Table] section describes the 
|              switching characteristics of the dynamic clamp, and the [Clamp 
|              Table] section gives the V-I table of the clamp in its "off" 
|              state. This data is used as follows.
|
|              A dynamic clamp is modeled by a V-I curve that is offset 
|              (translated) along the voltage axis with the voltage waveform 
|              given in the [Pulse Table] section. The resulting dynamic V-I 
|              curve can be expressed as
|     
|                   I = f( V - V_pulse(t) ),
|
|              where V_pulse(t) is the offset voltage waveform described by 
|              the [Pulse Table] section and f(V) is the resulting V-I curve 
|              of the clamp in its off state, corresponding to the data 
|              given in the [Clamp Table] section. The [Clamp Table] data 
|              follows the same format and rules as the V-I curve data of 
|              the corresponding regular ground or power clamp ([GND Clamp], 
|              [POWER Clamp]). The [Pulse Table] section describes the offset 
|              voltage waveform and uses the same format as the [Rising 
|              Waveform] and [Falling Waveform] sections in driver models.
|               
|              Once the voltage on the clamp crosses the triggering threshold,
|              the [Pulse Table] data is used to offset the V-I curve obtained 
|              from the [Clamp Table] section. The dependence of the offset
|              pulse on the clamp voltage is illustrated below.
|
|
|                            Clamp voltage vs. time.
|
|                           o o o o 
|                         o
|                       o
|                      o -------
|                     o|       ^ 
|                    o |       | V_trigger
|                   o  |       v            time
|               o o    | ------------------------>
|                      |
|                      |              
|                      |              
|                      |      Clamp offset voltage vs. time.
|                      |
|                      |                      o o o o    
|                      |                    o        o     
|                      |                  o           o  
|                      |          o o o o              o 
|                      |         o                      o 
|                      |        o                        o          time
|                      o o o o o                          o o o -------->
|
|                      ^
|                      |_  Pulse data is used from this moment on
|                          to offset the V-I curve.
|                      
|      
|------------------------------------------------------------------------------
|
| Example: 
|
[Dynamic GND Clamp]
|
V_trigger     = 1.4V
V_trigger_min = 1.2V
V_trigger_max = 1.6V
|
[Pulse 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 
|
[Clamp Table]
|
|  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
|
|
[Dynamic POWER Clamp]
|
V_trigger     = 3.6V
V_trigger_min = 3.8V
V_trigger_max = 3.4V
|
[Pulse 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 
|
[Clamp Table]
|
|  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
|
|==============================================================================

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

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.

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