Subject: IBIS TO SPICE DISCUSSION

From: [email-masked] (Bob Ross)
Date: Mon, 27 Oct 1997 19:14:00 -0800 (PST)

To All:

To help in doing the IBIS to Spice transformation, I am sharing with you
a PROTOTYPE configuration and set of Spice decks which I used to examine
some waveform processing algorithms.  This was never completed into a
self-contained Spice implementation of IBIS.  However, the decomposed
form can be used to illustrate the algorithm and examine how it performs.

The figure below illustrates the assumed Spice (and IBIS) topology.
The PULLUP, PULLDOWN, POWER_CLAMP and GND_CLAMP tables are all made
relative to their respective reference voltage nodes PWR, GRD, PWRC,
and GNDC.  These tables along with the RISING AND FALLING WAVEFORMS
for given DUT and FIXTURE conditions can all be representated as
subcircuits using piecewise linear voltage controlled current sources
(for the IV tables) and properly scaled voltage controlled voltage
sources (for the VT tables).

The algorithm theory is straight-forward.  From the IBIS model
information including its waveform table, it is possible to determine
from circuit theory both the voltage at the DIE and the corresponding
currents flowing through R_DUT and C_COMP.  It is also possible to
determine the currents supplied by the four IV tables which are
summed up at the DIE.  The PULLDOWN and PULLUP multipliers Kd(t) and
Ku(t) transition between 1 and 0 (0 and 1) for the RISING WAVEFORM,
and visa-versa for the FALLING WAVEFORM.  So one algorithm is to
derive the multiplier tables that will produce the original WAVEFORM
table

A one-waveform implementation would (arbitrarily) ASSUME some relationship
between Ku(t) and Kd(t) such as Ku(t) = 1 - Kd(t).  If the multipliers
themselves are ramp tables, the output is not necessarily a ramp for
a given test load.

This prototype illustrates an approach in which some form of internal
adjustment or scaling is done for processing waveform based IBIS models.
The processing of any IBIS model is just a mathematical process where 
the response to any load is just the mathematical blending of specified
responses based on the assumed topology.  There are other things to be
learned such as numerical sensitivities to the DUT parameters, resolution
of the IV tables, etc.  Like Spice transistor models with the .option
controls for convergence, there is numerical sensitivity to some data that
deviates from ideal theorical processing which assumes that the data
and their derivatives are continuous.

         PWR           PWRC 
          o             o
          |             |
          |     POWER_  |
  PULLUP  |      CLAMP  |      
      |---o---|     |---o---|
      | Iu(V) |     |       |                                          
      |       |     |Ipc(V) |                                    WAVEFORM
      | Ku(t) |     |       |   DIE               PIN              TABLE
      |---o---|     |---o---|    |                 |                |
          |             |        |                 |                |
          |             | V      v   R_DUT  L_DUT  v L_FIXTURE      v   
          o-------------o--------o--/\/\/\--UUUUU--o---UUUUU--o-----o
          |             |        |   R_PKG  L_PKG  |          |     |
          |             |        |                 |          |     |
      |---o---|     |---o---|    |                 |          |     |
      | Id(V) |     |       |    | C_COMP    C_DUT | C_PKG    |     \
      |       |     |Igc(V) |   ---               ---        ---    /
      | Kd(t) |     |       |   ---               ---        ---    \
      |---o---|     |---o---|    |                 |       C_ |     / R_
PULLDOWN  |       GND_  |        |                 |  FIXTURE |     | FIXTURE
          |      CLAMP  |        |                 |          |     |
          |             |        |                 |          |     |
          o             o        o                 o          o     o
         GRD           GNDC     GND               GND        GND  V_FIXTURE       

Below are 5 files:

   sim2.sp:  The IBIS processing algorithm which loads ibismod.lib
             and ibiscal.lib.  It uses the HSPICE equation format for
             clarity rather than a more general polynomial multiply.
             The model itself is driven by the the VPULSE control
             to produce the actual rising and falling responses in a
             manner that sets the pulse width and period.  A more complicated
             stimulus could be used.  One implementation constraint here
             is that the pulse widths must be greater than the Waveform
             table time lengths.  Also the actual simulation load including
             transmission line loads can be added here for testing.

   ibismod.lib:  The IBIS model parmeters including supply voltages,
             package values, IV tables and VT tables are inserted into
             this file for each IBIS model by cut-and-paste.  Zero-valued
             parameters are given neglibable values rather than "0" to
             prevent some Spice error messages. 

   ibiscal.lib:  The multiplying tables are inserted here for the rising
             and falling responses by cut-and-paste.

   ext2r.sp:  A two-waveform extraction circuit for generation the KUR(t)
             and KDR(t) tables.  The files that are printed are cut-and-
             pasted in ibiscal.lib.

   ext2f.sp:  A two-waveform extraction circuit for generating the KUF(t)
             and KDF(t) tables.

A simple example originally given by DC Sessions is embedded into the 
example.  As originally proposed, the KU(t) and KD(t) tables are piecewise
linear.  However, if the response itself were piecewise linear, then different
KU(t) and KD(t) tables could be derived to match the reponse in the 
ibismod.lib file.  DC's example is interesting because it illustrates that
the IBIS architecture can work with the pullup and pulldown stage turn-on
control and turn-off control phased differently:

"As long ago promised, here's a talking case for BIRD42.3
For simplicity, I've restricted the case to a very simple
falling-edge behavioral model.  The driver in question
is a 50-ohm switched resistor, with the following
time/conductance tables.  The pulldown driver is common,
but there are two different pullup responses:  All
listed conductances are piecewise linear.

  Time  |  Pulldown   |  Pullup #1  |  Pullup #2  |
        | Conductance | Conductance | Conductance |
--------+-------------+-------------+-------------+
   0 ps |     0 mS    |    20 mS    |    20 mS    |
 500 ps |     0 mS    |    20 mS    |    20 mS    |
1000 ps |     0 mS    |    10 mS    |    20 mS    |
1500 ps |     0 mS    |     0 mS    |     0 mS    |
2000 ps |    10 mS    |     0 mS    |     0 mS    |
2500 ps |    20 mS    |     0 mS    |     0 mS    |
3000 ps |    20 mS    |     0 mS    |     0 mS    |

As is typical for real-world drivers, these are
break-before-make."

Below, Pullup #1 is illustrated as a Falling edge, and Pullup #2
is illustrated as a rising edge (by taking the mirror image conditions).
The KU and KD multipliers are used to shape the conductance from the
50 ohms (20 mS) given in the PULLUP and PULLDOWN tables.  Some linear
ramp tables are provided in the RISING and FALLING WAVEFORM tables
of ibismod.lib.

Bob Ross
Interconnectix

sim2.ps

* TWO WAVEFORM SIMULATION
*
.INCLUDE IBISCAL.LIB $................. VVVVVVVV
.INCLUDE IBISMOD.LIB $......... VVVVVVVV
*
* SUPPLIES
XPWR   VCC   GRD  PWRC    GNDC  SUPPLIES
*
* INPUT CONTROL 
GON    ON    GRD  STEP    GRD  -1
VON    ON    GRD  0
*
XRAMP  STEP  GRD  RMPR    RMPF    	RAMPS
XKUR   RMPR  GRD  NKUR    		KUR
VKUR   NKUR  GRD  0
XKUF   RMPF  GRD  NKUF    		KUF
VKUF   NKUF  GRD  0
*
XKDR   RMPR  GRD  NKDR    		KDR
VKDR   NKDR  GRD  0
XKDF   RMPF  GRD  NKDF    		KDF
VKDF   NKDF  GRD  0
*
* HIGH SIDE
XUP    OUT1  VCC  NU1     	PULLUP
VUP    NU1   VCC  0
GUP    OUT1  VCC  CUR='-I(VUP)*(I(VKUR)*I(VON)+I(VKUF)*(1-I(VON)))'
XPC    OUT1  VCC  		POWER_CLAMP
*
* LOW SIDE
XDN    OUT1  GRD  ND1     	PULLDOWN
VDN    ND1   GRD  0
GDN    OUT1  GRD  CUR='-I(VDN)*(I(VKDR)*I(VON)+I(VKDF)*(1-I(VON)))'
XGC    OUT1  GNDC 		GND_CLAMP
*
* C_COMP AND DUT PACKAGE
XCAP   OUT1  GRD		C_COMP
XPKG   OUT1  GRD  PIN1    	PACKAGE
*

* LOAD

** Test Against Original Loads.
XLOAD1 PIN1  GRD 	    	LOADR1
*XLOAD2 PIN1  GRD 	    	LOADR2
*XLOAD3 PIN1  GRD 	    	LOADF1
*XLOAD4 PIN1  GRD 	    	LOADF2
RPIN1  PIN1  GRD  1E9

** Some Actual Sample Loads

*RLOAD  PIN1  VOL   50
*VOL    VOL   GRD   2.5
*COL    PIN1  GRD   10p

*TLOAD PIN1 GRD PIN9 GRD  Z0=50 TD=1N
*R9 PIN9 GND 50G

** Voltage width and period control
VPULSE STEP  GRD  0  PULSE (1 0 0P 1P 1P 5N 10N)
.TRAN 0.2N 10N 0 0.02n
.OPTION POST
.END

ibismod.lib
*==========================================================================
* 		CMOS1 IBIS FORMATTED TABLE AND WAVEFORM SUBCIRCUITS
*==========================================================================

*==========================================================================
* 		IBIS FORMATTED TABLE AND WAVEFORM SUBCIRCUITS
*==========================================================================
*
* LIBRARY OF SUBCIRCUITS
*
*	IBISMOD.LIB	Copy of IBIS Data fromatted into a Subcircuit
*			Data Library for Inclusion.
*	IBISCAL.LIB	Copy of Simulation Tables and Data for Calculations
*			for Inclusion.
*
* SUBCIRCUIT CONTENTS
*
*	SUPPLIES        IBIS Reference Power Supplies
*	C_COMP		IBIS C_comp
*	PACKAGE		IBIS L_pkg, R_pkg, C_pkg (also L_dut, R_dut, C_dut)
*
*	PULLUP		IBIS PULLUP Table
*	POWER_CLAMP	IBIS POWER CLAMP Table
*	PULLDOWN	IBIS PULLDOWN Table
*	PULLDOWN_ECL	IBIS PULLDOWN Table with ECL Polarity Convention
*	GND_CLAMP	IBIS GND_CLAMP Table
*
*	RISINGn		IBIS RISING WAVEFORM Table Number "n".
*	LOADRn		IBIS Load for Rising Waveform Table "n".
*	FALLINGn	IBIS FALLING WAVEFORM Table Number "n".
*	LOADFn		IBIS Load for Falling Waveform Table "n".
*
* NOTES:
*	(1) V/I and Waveform tables consisting of the first column and
*	    any of the remaining columns may be copied directly into
*	    the corresponding subcircuit data tables below, but with the
*	    insertion of the continuation character "+" as the first
*	    character of each line.  Notes (2) and (3) contain data
*	    table limitations.  The polarity conventions of IBIS are
*	    followed in formulating the subcircuit tables.  Delete
*	    rows which consist of "" data.
* 	(2) All Voltage entries must be ordered in ascending order for
*     	    the PULLUP, PULLDOWN, GND_CLAMP and POWER_CLAMP tables.
*  	(3) All Waveform tables must be ordered in ascending order and
*      	    each of the Rising and Falling transitions should be referenced
*     	    to an implied pulse waveform relative time = 0ns for the
*	    beginning of that specific transition.  The time = 0ns could
*   	    be an input transition point that is common to all of the
*           tables of similar transition direction.
*
*==========================================================================
* IBIS POWER SUPPLY TABLE
*--------------------------------------------------------------------------
.SUBCKT SUPPLIES  200 100 400 300
*                 |   |   |   |
*                 |   |   |   Ground Clamp Ref Voltage (Usually Gnd)
*                 |   |   Power Clamp Ref Voltage (Usually Vcc)
*                 |   Pulldown Reference Voltage (Usually Gnd)
*                 Pullup Reference Voltage (Usually Vcc)
*--------------------------------------------------------------------------
* Enter the Supply Values Here
VPULLUP	        201  0  5.0
Rpullup		200 201 1e-5
VPULLDOWN       101  0  0.0
Rpulldown	100 101 1e-5
VPOWERCLAMP	401  0  5.0
Rpowerclamp	400 401 1e-5
VGNDCLAMP	301  0  0
Rgndclamp	300 301 1e-5
.ENDS
*==========================================================================

*==========================================================================
* IBIS C_COMP
*--------------------------------------------------------------------------
.SUBCKT C_COMP    1   100
*                 |   |   
*                 |   Pulldown Reference Voltage (Usually Gnd)
*                 Die
*--------------------------------------------------------------------------
* Enter the Supply Values Here
C_comp          1   100  1e-15
.ENDS
*==========================================================================

*==========================================================================
* IBIS PACKAGE
*--------------------------------------------------------------------------
.SUBCKT PACKAGE   1   100  2
*                 |   |    |
*                 |   |    Pin
*                 |   Pulldown Reference Voltage (Usually Gnd)
*                 Die
*--------------------------------------------------------------------------
* Enter the Supply Values Here
L_pkg           1  3    1e-12
R_pkg		3  2	1e-6
C_pkg		2  100  1e-15
.ENDS
*==========================================================================

*==========================================================================
* IBIS PULLUP TABLE
*--------------------------------------------------------------------------
.SUBCKT PULLUP	  1  200  2
*                 |   |   |
*                 |   |   Current Source Output
*                 |   Reference Voltage (Usually Pullup Ref. or Vcc)
*                 Output Sense Voltage (Usually at Vout of die)
*--------------------------------------------------------------------------
GPULLUP_HS	2 200  PWL(1)  200  1
+     -5.00V        100m
+      0            0   
+      5           -100m 
+     10.00V       -200m             
.ENDS
*==========================================================================
* IBIS PULLDOWN TABLE
*--------------------------------------------------------------------------
.SUBCKT PULLDOWN  1  100  2
*                 |   |   |
*                 |   |   Current Source Output
*                 |   Reference Voltage (Usually Pulldown Ref. or GND)
*                 Output Sense Voltage (Usually at Vout of die)
*--------------------------------------------------------------------------
GPULLDOWN_HS	2  100  PWL(1)  1  100
+     -5.00V        -100m  
+      0             0
+      5            100m                     
+     10.00V        200m                       
.ENDS
*==========================================================================
* IBIS PULLDOWN_ECL TABLE
*--------------------------------------------------------------------------
.SUBCKT PULLDOWN_ECL  1  200  2
*                     |   |   |
*                     |   |   Current Source Output
*                     |   Reference Voltage (Usually Pullup Ref. or Vcc)
*                     Output Sense Voltage (Usually at Vout of die)
*--------------------------------------------------------------------------
GPULLDOWN_ECL_HS	2  200  PWL(1)  200  1
+   0.000E+00   0.0
+   1.000E-01   0.0
.ENDS
*==========================================================================
* IBIS POWER_CLAMP TABLE
*--------------------------------------------------------------------------
.SUBCKT POWER_CLAMP 1  200
*                   |   |
*                   |   Reference Voltage (Usually Pullup Ref. or Vcc)
*                   Output Voltage (Usually at Vout of die)
*--------------------------------------------------------------------------
* Enter 0.0 for no clamp
*
GPWR_CLAMP_HS	1  200  PWL(1)  200  1
+        -5.00V         0mA
+        10.00V         0mA                       
.ENDS
*==========================================================================
* IBIS GND_CLAMP TABLE
*--------------------------------------------------------------------------
.SUBCKT GND_CLAMP 1  100 
*                 |   |
*                 |   Reference Voltage (Usually GND clamp Ref. or GND)
*                 Output Voltage (Usually at Vout of die)
*--------------------------------------------------------------------------
* Enter 0.0 for no clamp
*
GGND_CLAMP_HS	1  100  PWL(1)  1  100
+        -5.00V         0mA
+         10.00V         0mA                       
.ENDS
*==========================================================================

*==========================================================================
* IBIS RISING WAVEFORM1 TABLE
*--------------------------------------------------------------------------
.SUBCKT  LOADR1 1  100 
*               |   |  
*               |   Reference Voltage (Usually Pulldown Ref. or GND)
*               Pin Connection
*--------------------------------------------------------------------------
L_FIXTURE	1  3    1e-12
C_FIXTURE	3  100  1e-15
R_FIXTURE	3  4    50
V_FIXTURE	4  100  0
.ENDS
*--------------------------------------------------------------------------
.SUBCKT RISING1	   2  100
*              	   |   |
*              	   |   Reference Voltage (Usually Pulldown Ref. or GND)
*              	   Output Serving as PWL Voltage Source to Input Connection
*--------------------------------------------------------------------------
VIN  	2  100  PWL
+     0.     0.0
+     1.5n   0.0
+     2.5n   2.5
.ENDS
*==========================================================================

*==========================================================================
* IBIS RISING WAVEFORM2 TABLE
*--------------------------------------------------------------------------
.SUBCKT  LOADR2 1  100 
*               |   |  
*               |   Reference Voltage (Usually Pulldown Ref. or GND)
*               Pin Connection
*--------------------------------------------------------------------------
L_FIXTURE	1  3    1e-12
C_FIXTURE	3  100  1e-15
R_FIXTURE	3  4    50
V_FIXTURE	4  100  5
.ENDS
*--------------------------------------------------------------------------
.SUBCKT RISING2	   2  100
*              	   |   |
*              	   |   Reference Voltage (Usually Pulldown Ref. or GND)
*              	   Output Serving as PWL Voltage Source to Input Connection
*--------------------------------------------------------------------------
VIN  	2  100  PWL
+     0.0   2.5
+     1.0n  2.5
+     1.5n  5.0
.ENDS
*==========================================================================

*==========================================================================
* IBIS FALLING WAVEFORM1 TABLE
*--------------------------------------------------------------------------
.SUBCKT  LOADF1	1  100 
*               |   |  
*              	|   Reference Voltage (Usually Pulldown Ref. or GND)
*              	Pin Connection
*--------------------------------------------------------------------------
L_FIXTURE	1  3    1e-12
C_FIXTURE	3  100  1e-15
R_FIXTURE	3  4    50
V_FIXTURE	4  100  0
.ENDS
*--------------------------------------------------------------------------
.SUBCKT FALLING1   2  100
*             	   |   |
*     	           |   Reference Voltage (Usually Pulldown Ref. or GND)
*              	   Output Serving as PWL Voltage Source to Input Connection
*--------------------------------------------------------------------------
VIN  	2  100  PWL
+    0.0           2.5
+    0.5n          2.5
+    1.5n          0.0
.ENDS
*==========================================================================

*==========================================================================
* IBIS FALLING WAVEFORM2 TABLE
*--------------------------------------------------------------------------
.SUBCKT  LOADF2	1  100 
*               |   |  
*               |   Reference Voltage (Usually Pulldown Ref. or GND)
*               Pin Connection
*--------------------------------------------------------------------------
L_FIXTURE	1  3    1e-12
C_FIXTURE	3  100  1e-15
R_FIXTURE	3  4    50
V_FIXTURE	4  100  5
.ENDS
*--------------------------------------------------------------------------
.SUBCKT FALLING2   2  100
*             	   |   |
*     	           |   Reference Voltage (Usually Pulldown Ref. or GND)
*              	   Output Serving as PWL Voltage Source to Input Connection
*--------------------------------------------------------------------------
VIN  	2  100  PWL
+     0.0        5
+     1.5n       5
+     2.5n       2.5
.ENDS
*==========================================================================

ibiscal.lib
*==========================================================================
* 		IBIS CALCULATED TABLE AND WAVEFORM SUBCIRCUITS
*==========================================================================
*
* LIBRARY OF SUBCIRCUITS
*
*	IBISMOD.LIB	Copy of IBIS Data formatted into a Subcircuit
*			Data Library for Inclusion.
*	IBISCAL.LIB	Copy of Simulation Tables and Data for Calculations
*			for Inclusion.
*
* SUBCIRCUIT CONTENTS
*
*	RAMPS	  	Simutaneous Ramps for Rising and Falling Sources
*
*	KUR		Pullup Rising Wavefrom VI Table Multiplier
*	KDR		Pulldown Rising Wavefrom Time VI Table Multiplier
*
*	KUF		Pullup Falling Waveform Time VI Table Multiplier
*	KDF		Pulldown Falling Waveform Time VI Table Multiplier
*
* NOTES:
*	(1) The Kxx tables are scaled 1nV = 1ns so that Spice Time
*	    data is inserted directly after inserting "+ " for the
*           continuation of the table.  These tables could be used
*           directly as PWL current sources.
*	(2) The ramp data is in the order of 10V maximum, but is scaled
*	    by 1e-9 for ramp VCCS tables to correspond to typical
*	    "nanosecond" time scaling.
*
*==========================================================================

*==========================================================================
* TIMERAMP
*--------------------------------------------------------------------------
.SUBCKT RAMPS  1  100  2   3
*                 |   |   |   |
*                 |   |   |   Output Falling Voltage Ramp
*                 |   |   Output Rising Voltage Ramp
*                 |   Reference Voltage (Usually Pulldown Ref. or GND)
*                 Input Pulse Voltage
*--------------------------------------------------------------------------
* Enter Scaled Ramp Duration Here in 1nV = 1nS
*               vvv
VTIME   4  100  3.00N
*
RTIME   4  100  1E9
ETIMEG  5  100  4  100  1E9
RIN	1  100  1E9
GRAMPR  7  100  1  6    -2
CRAMP   7  100  1E-9
ERAMPR  2  100  7  100  1E-9
RRAMPR  2  100  1E9
ERAMPF  3  100  4  2    1
RRAMPF  3  100  1E9
DMAX    7   5   DIDEAL
DMIN    100 7   DIDEAL
VHALF   6  100  0.5
RHALF   6  100  1E9
.MODEL  DIDEAL D (N=0.001)
.ENDS
*==========================================================================

*==========================================================================
* PULLUP TABLE RISING WAVEFORM MULTIPIER VCCS
*--------------------------------------------------------------------------
.SUBCKT KUR       1  100  2
*                 |   |   |
*                 |   |   Current Source Output
*                 |   Reference Voltage (Usually Pulldown Ref. or GND)
*                 Input Sense Voltage (Usually at ramp output)
*--------------------------------------------------------------------------
GDR_HS	100  2  PWL(1)  1  100
+   0.           0
+   1.5n         0
+   2.0n         0.5
+   2.5n         1.0
.ENDS
*==========================================================================
* PULLDOWN TABLE RISING WAVEFORM MULTIPIER VCCS
*--------------------------------------------------------------------------
.SUBCKT KDR       1  100  2
*                 |   |   |
*                 |   |   Current Source Output
*                 |   Reference Voltage (Usually Pulldown Ref. or GND)
*                 Input Sense Voltage (Usually at ramp output)
*--------------------------------------------------------------------------
GDF_HS	100  2  PWL(1)  1  100
+   0.            1 
+   1n            1
+   1.5n          0.0
.ENDS
*==========================================================================

*==========================================================================
* PULLUP TABLE FALLING WAVEFORM MULTIPIER VCCS
*--------------------------------------------------------------------------
.SUBCKT KUF       1  100  2
*                 |   |   |
*                 |   |   Current Source Output
*                 |   Reference Voltage (Usually Pulldown Ref. or GND)
*                 Input Sense Voltage (Usually at ramp output)
*--------------------------------------------------------------------------
GUF_HS	100  2  PWL(1)  1  100
+   0.          1
+   0.5n        1
+   1.0n        0.5
+   1.5n        0
.ENDS
*==========================================================================
*==========================================================================
* PULLDOWN TABLE FALLING WAVEFORM MULTIPIER VCCS
*--------------------------------------------------------------------------
.SUBCKT KDF       1  100  2
*                 |   |   |
*                 |   |   Current Source Output
*                 |   Reference Voltage (Usually Pulldown Ref. or GND)
*                 Input Sense Voltage (Usually at ramp output)
*--------------------------------------------------------------------------
GDF_HS	100  2  PWL(1)  1  100
+   0.           0
+   1.5n         0
+   2.0n         0.5
+   2.5n         1  
.ENDS
*==========================================================================

ext2r.sp

* EXTRACT 2 WAVEFORM RISING CALIBRATION
*
.INCLUDE IBISMOD.LIB $......... VVVVVVVV
*
* SUPPLIES
XPWR    VCC   GND  PWRC  GNDC   SUPPLIES
*
* INPUT WAVEFORM 1 AND DUMMY LOAD
XVIN1   IN1   GND  		RISING1
RIN1    IN1   GND  1E6
*
* INPUT WAVEFORM 2 AND DUMMY LOAD
XVIN2   IN2   GND  		RISING2
RIN2    IN2   GND  1E6
*
* HIGH SIDE 1
XUP1    OUT1  VCC  NU1     	PULLUP
VUP1    NU1   VCC  0
GUP1    OUT1  VCC  CUR='-I(VUP1)*I(VKUR)'
XPC1    OUT1  PWRC  		POWER_CLAMP
*
* LOW SIDE 1
XDN1    OUT1  GND  ND1     	PULLDOWN
VDN1    ND1   GND  0
GDN1    OUT1  GND  CUR='-I(VDN1)*I(VKDR)'
XGC1    OUT1  GNDC  		GND_CLAMP
*
* C_COMP AND DUT PACKAGE 1
XCAP1   OUT1  GND		C_COMP
XPKG1   OUT1  GND  PIN1    	PACKAGE
*
* LOAD 1
XLOAD1  PIN1  GND 	    	LOADR1
RPIN1   PIN1  GND  1E9
*
* HIGH SIDE 2
XUP2    OUT2  VCC  NU2     	PULLUP
VUP2    NU2   VCC  0
GUP2    OUT2  VCC  CUR='-I(VUP2)*I(VKUR)'
XPC2    OUT2  PWRC  		POWER_CLAMP
*
* LOW SIDE 2
XDN2    OUT2  GND  ND2     	PULLDOWN
VDN2    ND2   GND  0
GDN2    OUT2  GND  CUR='-I(VDN2)*I(VKDR)'
XGC2    OUT2  GNDC  		GND_CLAMP
*
* C_COMP AND DUT PACKAGE 2
XCAP2   OUT2  GND		C_COMP
XPKG2   OUT2  GND  PIN2    	PACKAGE
*
* LOAD 2
XLOAD2  PIN2  GND 	    	LOADR2
RPIN2   PIN2  GND  1E9
*
* FEEDBACK TABLE ADJUSTMENT .............................. VVV
GDET    NDET  GND  CUR='(I(VDN2)*I(VUP1)-I(VDN1)*I(VUP2))/(1E4)'
VDET    NDET  GND  0
*
GKUR    NKU   GND
+             CUR='((V(IN2)-V(PIN2))*I(VDN1)-(V(IN1)-V(PIN1))*I(VDN2))/I(VDET)'
VKUR    NKU   GND  0
*
GKDR    NKD   GND
+             CUR='((V(IN1)-V(PIN1))*I(VUP2)-(V(IN2)-V(PIN2))*I(VUP1))/I(VDET)'
VKDR    NKD   GND  0
*
.TRAN 0.2n 10n
.PRINT TRAN 				I(VKUR)
.PRINT TRAN 				I(VKDR)
*
.OPTION POST
.END

ext2f.sp

* EXTRACT 2 WAVEFORM FALLING CALIBRATION
*
.INCLUDE IBISMOD.LIB $......... VVVVVVVV
*
* SUPPLIES
XPWR    VCC   GND  PWRC  GNDC   SUPPLIES
*
* INPUT WAVEFORM 1 AND DUMMY LOAD
XVIN1   IN1   GND  		FALLING1
RIN1    IN1   GND  1E6
*
* INPUT WAVEFORM 2 AND DUMMY LOAD
XVIN2   IN2   GND  		FALLING2
RIN2    IN2   GND  1E6
*
* HIGH SIDE 1
XUP1    OUT1  VCC  NU1     	PULLUP
VUP1    NU1   VCC  0
GUP1    OUT1  VCC  CUR='-I(VUP1)*I(VKUF)'
XPC1    OUT1  PWRC  		POWER_CLAMP
*
* LOW SIDE 1
XDN1    OUT1  GND  ND1     	PULLDOWN
VDN1    ND1   GND  0
GDN1    OUT1  GND  CUR='-I(VDN1)*I(VKDF)'
XGC1    OUT1  GNDC  		GND_CLAMP
*
* C_COMP AND DUT PACKAGE 1
XCAP1   OUT1  GND		C_COMP
XPKG1   OUT1  GND  PIN1    	PACKAGE
*
* LOAD 1
XLOAD1  PIN1  GND 	    	LOADF1
RPIN1   PIN1  GND  1E9
*
* HIGH SIDE 2
XUP2    OUT2  VCC  NU2     	PULLUP
VUP2    NU2   VCC  0
GUP2    OUT2  VCC  CUR='-I(VUP2)*I(VKUF))'
XPC2    OUT2  PWRC  		POWER_CLAMP
*
* LOW SIDE 2
XDN2    OUT2  GND  ND2     	PULLDOWN
VDN2    ND2   GND  0
GDN2    OUT2  GND  CUR='-I(VDN2)*I(VKDF)'
XGC2    OUT2  GNDC  		GND_CLAMP
*
* C_COMP AND DUT PACKAGE 2
XCAP2   OUT2  GND		C_COMP
XPKG2   OUT2  GND  PIN2    	PACKAGE
*
* LOAD 2
XLOAD2  PIN2  GND 	    	LOADF2
RPIN2   PIN2  GND  1E9
*
* FEEDBACK TABLE ADJUSTMENT .............................. VVV
GDET    NDET  GND  CUR='(I(VDN2)*I(VUP1)-I(VDN1)*I(VUP2))/(1E7)'
VDET    NDET  GND  0
*
GKUF    NKU   GND
+             CUR='((V(IN2)-V(PIN2))*I(VDN1)-(V(IN1)-V(PIN1))*I(VDN2))/I(VDET)'
VKUF    NKU   GND  0
*
GKDF    NKD   GND
+             CUR='((V(IN1)-V(PIN1))*I(VUP2)-(V(IN2)-V(PIN2))*I(VUP1))/I(VDET)'
VKDF    NKD   GND  0
*
.TRAN 0.2n 10n
.PRINT TRAN 				I(VKUF)
.PRINT TRAN 				I(VKDF)
.OPTION POST
.END