****************************************************************************
*
* WARNING : please consider following remarks before usage
*
* 1) All models are a tradeoff between accuracy and complexity (ie. simulation
*    time).
*
* 2) Macromodels are not a substitute to breadboarding, they rather confirm the
*    validity of a design approach and help to select surrounding component values.
*
* 3) A macromodel emulates the NOMINAL performance of a TYPICAL device within
*    SPECIFIED OPERATING CONDITIONS (ie. temperature, supply voltage, etc.).
*    Thus the macromodel is often not as exhaustive as the datasheet, its goal
*    is to illustrate the main parameters of the product.
*
* 4) Data issued from macromodels used outside of its specified conditions
*    (Vcc, Temperature, etc) or even worse: outside of the device operating
*    conditions (Vcc, Vicm, etc) are not reliable in any way.
*
****************************************************************************
****
***  TSV630  (WITH STAND-BY)  Spice macromodel subckt 
***  February 2009
****                      
************ CONNECTIONS: 
****             INVERTING INPUT
****              |  NON-INVERTING INPUT
****              |   |  OUTPUT 
****              |   |   |  POSITIVE POWER SUPPLY
****              |   |   |   |  NEGATIVE POWER SUPPLY 
****              |   |   |   |   |     STAND-BY 
****              |   |   |   |   |     |
.SUBCKT TSV63X_SHDN   VM  VP  VS  VCCP VCCN  STB

    S_SW_OUT  VS_STB VS VSTB_CTRL 0  SW_OUT


    S_SW_LEAK  VS 0 VSTB_CTRL 0  SW_LEAK


    S_SW_VB2_VS  VB_2 NET0220 VSTB_CTRL 0  SW_VB2_VS


    S_SW_VB_VREF  VB NET0224 VSTB_CTRL 0  SW_VB_VREF

    G_ISTB 0 STB VALUE={ Iil_STB*(1-V(VSTB_one)) -Iih_STB*V(VSTB_one)}
    G_IEE_STB VEE_N VCCN_ENHANCED POLY(2) VSTB_CTRL 0 IEE_val 0 0 0 0 0 1
    G_ICC_STB VCCP VCCN POLY(2) VSTB_CTRL 0 Icc_val 0 0 0 0 0 1
    G_IOUT_SINKED VCCN 0 VALUE={IF(I(VreadIo)>0, 0, I(VreadIo))}
    G2_ICC_STB VCCP VCCN VALUE={ICC_STB*( 1-V(VSTB_ctrl) )}
    G_ICCSAT_OUTHIGH VCCP VCCN VALUE={IF(I(V_OUTVLIM_HIGH)>1u ,
+V(Icc_out_high)*V(VSTB_ctrl), 0)}
    G_IIB_VP VREF VP TABLE {V(Vccp,Vccn)} = (+1.8 1p) (+3.3 1p) (+5.0 1p)
    G_ICCSAT_OUTLOW VCCP VCCN VALUE={IF(I(V_OUTVLIM_LOW)>1u ,
+V(Icc_out_low)*V(VSTB_ctrl) , 0)}
    G_I_IO VB_2 VREF VALUE={IF( V(v_Io_val)<0  , 0.0 , V(VB_Vref)*GB*(
+30*( 1 - exp(-abs(V(v_Io_val))/15m )) )  )}
    G_IOUT_SOURCED VCCP 0 VALUE={IF(I(VreadIo)>0, I(VreadIo),0)}
    GM1 VREF VB VOUT_DIFF__SR_VCC 0 {1/RD}
    

    G_I_VB VB_2 VREF VALUE={TABLE( V(VB_Vref) , -2.7 , -2.7*GB*1 , -2.0 ,
+ -2.0*GB*1 , -1.5 , -1.5*GB*1 , -1.0 , -1.0*GB*1 , -0.8 , -0.8*GB*1 ,
+ -0.4 , -0.4*GB*1 , -0.1 , -0.1*GB*1 , -0.02 , -0.02*GB*1 , -0.005 ,
+ -0.005*GB , 0 , 0 , +0.001 , 0.001*GB , +0.008 , 0.008*GB , +0.015 , 
+ 0.015*GB*1.6 , +0.021 , 0.021*GB*1.9 , +0.035 , +0.035*GB*2.5 , 
+ 0.05 , 0.05*GB*5 , +0.1 , 0.1*GB*10 , +0.3 , 0.3*GB*20 , +1.0 , 
+ 1.0*GB*20 , +1.5 , 1.5*GB*20 , +2.7 , 2.7*GB*20 )}

    G_IIB_VM VREF VM TABLE {V(Vccp,Vccn)} = (+1.8 1p) (+3.3 1p) (+5.0 1p)
    RSTB_CTRL VSTB_CTRL VSTB_ONE {RSTB_ctrl}
    RD1 VCCP_ENHANCED VO_DIFF_PLUS {RD}
    RD2 VCCP_ENHANCED VO_DIFF_MINUS {RD}
    R1_REF NET287 NET247 1Meg
    R_ICCSAT_HIGH ICC_OUT_HIGH 0 1K
    RPROT_IN_M_VCCN VCCN NET243 15K
    R2_REF NET247 NET241 1Meg
    RPROT_IN_P_VCCN NET406 VCCN 15K
    RO2_2 VB_3 VB_2 {Ro2_2}
    R_ICCSAT_LOW ICC_OUT_LOW 0 1K
    RPROT_IN_M_VCCP VCCP NET253 100
    RPROT_IN_P_VCCP NET421 VCCP 100
    E0 VSTB_ZERO 0 VALUE={IF(  (V(STB,Vccn)/V(Vccp,Vccn)) <= VIL_STB , 0 , 0.5 )}
    ESTB VSTB_ONE 0 VALUE={IF( (V(STB,Vccn)/V(Vccp,Vccn)) >= VIH_STB , 1 ,
+V(VSTB_zero) )}
    EREAD_VS NET0220 0 VALUE={IF( V(VS)> V(Vref), V(VS)*(1-a_ton) ,
+V(VS)*(1+a_ton))}
    EREAD_VREF NET0224 0 VREF 0 1.0
    E_VDEP_SINK_2 VAL_VDEP_SINK_FILTERED 0
+VALUE={IF(V(val_vdep_sink)<=0 , 0 , V(val_vdep_sink))}
    EMEAS_VOUT_DIFF VOUT_DIFF 0 VO_DIFF_PLUS VO_DIFF_MINUS 1.0


    E_RO1_VOL RO1_VOL 0 VALUE={TABLE(V(Vccp,Vccn), 1.8 , 45 , 3.3 , 28 , 5.0 , 23 )}
    E_RO1_VOH RO1_VOH 0 VALUE={TABLE(V(Vccp,Vccn), 1.8 , 54 , 3.3 , 42 , 5.0 , 27 )}    

    E2_REF NET241 0 VCCN 0 1.0
    EILIM_SINK VB_3_SINK VDEP_SINK VB_3 0 1.0
    E_R1 NET311 VREF VALUE={I(VreadI_R1)*( R1_sink
++(R1_source-R1_sink)*1/(1+exp(-alpha_switch*(V(v_Io_val)-Io_val_switch) )
+)) }
    EILIM_SOURCE VB_3_SOURCE VDEP_SOURCE VB_3 0 1.0
    EVLIM_LOW_VB NET425 0 VCCN 0 1.0
    E_VREF VREF 0 NET247 0 1.0
    EVLIM_LOW_VOUT NET411 0 VCCN 0 1.0
    E_SR_VCC_MODULATION VOUT_DIFF__SR_VCC 0 VALUE={V(Vout_diff)*(
+0.7277573529411762 + 0.11020833333333335*V(Vccp,Vccn)
+-0.011151960784313726*PWR(V(Vccp,Vccn),2) )}
    E_VDEP_SOURCE_2 VAL_VDEP_SOURCE_FILTERED 0
+VALUE={IF(V(val_vdep_source)>=0, 0, V(val_vdep_source))}
    EVLIM_HIGH_VOUT NET408 0 VCCP 0 1.0
    E_ICCSAT_HIGH ICC_OUT_HIGH 0 POLY(1) VCCP VCCN 0
    E_READIO V_IO_VAL 0 VALUE={I(VreadIo)}
    E_VDEP_SOURCE_3 VDEP_SOURCE 0 VALUE={IF( abs(I(VreadIo))<1m , 0 ,
+V(val_vdep_source_filtered))}
    E_VDEP_SOURCE_1 VAL_VDEP_SOURCE 0 VALUE={ ( -95.20588235294117 +
+73.33333333333336*V(Vccp,Vccn) + 3.921568627450974*PWR(V(Vccp,Vccn),2) ) 
+-5000*I(VreadIo)}
    E_VDEP_SINK_3 VDEP_SINK 0 VALUE={IF( abs(I(VreadIo))<1m , 0 ,
+V(val_vdep_sink_filtered))}
    E_ICCSAT_LOW ICC_OUT_LOW 0 POLY(1) VCCP VCCN -6.574632352941173E-5
+4.014583333333334E-5 -1.5931372549019734E-7
    E_RO1 VB_3 NET356 VALUE={IF(I(VreadIo)>0,
+V(Ro1_Voh)*I(VreadIo),V(Ro1_Vol)*I(VreadIo))}
    EVLIM_HIGH_VB NET416 0 VCCP 0 1.0
    E_VDEP_SINK_1 VAL_VDEP_SINK 0 VALUE={ ( 211.65808823529403
+-172.8125*V(Vccp,Vccn) + 12.316176470588244*PWR(V(Vccp,Vccn),2) )
+-5000*I(VreadIo)}
    E1_REF NET287 0 VCCP 0 1.0
    E_ICC ICC_VAL 0 POLY(1) VCCP VCCN 4.027205882352942E-5
+3.958333333333329E-6 -1.2254901960784258E-7
    EMEAS_VB_VREF VB_VREF 0 VB VREF 1.0
    E_RO2_1 NET295 VREF VALUE={I(VreadI_Ro2_1)*( Ro2_1_sink
++(Ro2_1_source-Ro2_1_sink)*1/(1+exp(-alpha_switch*(V(v_Io_val)-Io_val_switch)
+) )) }
    CSTB_CTRL VSTB_CTRL 0 1n
    CDIFF_PARASITIC VO_DIFF_PLUS VO_DIFF_MINUS 22p
    CCOMP VB VB_2 {Ccomp}
    CGATE_VM VM VREF 2.5p
    CGATE_VP VP VREF 2.5p
    C_RO2_1 VB_2 VREF 600p
    DILIM_SOURCE VB_3 VB_3_SOURCE DIODE_ILIM
    DPROT_IN_P_VCCP NET423 NET388 DIODE_VLIM
    DVLIM_HIGH_VB VB NET400 DIODE_VLIM
    DPROT_IN_M_VCCP VM NET398 DIODE_VLIM
    DVLIM_LOW_VB NET426 VB DIODE_VLIM
    D_OUTVLIM_LOW NET412 VB_3 DIODE_NOVd
    D_OUTVLIM_HIGH VB_3 NET382 DIODE_NOVd
    DPROT_IN_M_VCCN NET409 VM DIODE_VLIM
    DPROT_IN_P_VCCN NET405 NET423 DIODE_VLIM
    DILIM_SINK VB_3_SINK VB_3 DIODE_ILIM
    V_IEE IEE_VAL 0 DC {IEE}
    VPROT_IN_M_VCCP NET253 NET398 DC {V_DPROT}
    VREADI_R1 VB NET311 DC 0
    VVLIM_LOW_VB NET425 NET426 DC -770m
    V_ENHANCE_VCCN VCCN_ENHANCED VCCN DC {VCCN_enhance}
    VPROT_IN_P_VCCP NET421 NET388 DC {V_DPROT}
    VOS NET423 VP DC 0
    VVLIM_HIGH_VB NET400 NET416 DC -770m
    VREADI_RO2_1 VB_2 NET295 DC 0
    V_OUTVLIM_LOW NET411 NET412 DC {Vd_compensazione}
    VPROT_IN_M_VCCN NET409 NET243 DC {V_DPROT}
    VREADIO NET356 VS_STB DC 0
    VPROT_IN_P_VCCN NET405 NET406 DC {V_DPROT}
    V_OUTVLIM_HIGH NET382 NET408 DC {Vd_compensazione}
    V_ENHANCE_VCCP VCCP_ENHANCED VCCP DC {VCCP_enhance}
    M_NMOS2 VO_DIFF_MINUS VM VEE_N VCCN_ENHANCED MOS_N L={L} W={W}
    M_NMOS1 VO_DIFF_PLUS NET423 VEE_N VCCN_ENHANCED MOS_N L={L} W={W}
.ENDS
*** End of subcircuit definition.



*******************************************************************************
*
* MODELS/SUBCKTS and PARAMS used by TSV63x subckt:
*
.PARAM RD=1k
.PARAM VCCP_enhance=150m
.PARAM VCCN_enhance=-1100m 
.PARAM A0_source = 5.959352977968012e+7  
.PARAM Ro_source = 6.502380901815169e+4
.PARAM A0_sink = 7e+4
.PARAM Ro_sink = 2.2e+4
.PARAM alpha_switch = 1e6
.PARAM Io_val_switch = -7u
.PARAM Ccomp=8.5p 
.PARAM IEE=3u
.PARAM W=1.78u
.PARAM L=1u
.PARAM gm_mos=5.171655897198528e-05
.PARAM GB=6m 
.PARAM Ro1=35
.PARAM Ro2_2=1e-3 
.PARAM Ro2_1_source={Ro_source - Ro2_2 - Ro1} 
.PARAM Ro2_1_sink={Ro_sink - Ro2_2 - Ro1} 
.PARAM R1_sink={A0_sink/(gm_mos*GB*Ro2_1_sink)}
.PARAM R1_source={A0_source/(gm_mos*GB*Ro2_1_source)}
.PARAM V_DPROT=150m
.PARAM Vd_compensazione=-788.4u
.PARAM ICC_STB = 5n
.PARAM VIL_STB = 100m
.PARAM VIH_STB = 900m
.PARAM Iout_leak_STB = 50p
.PARAM RSTB_ctrl = 57
.PARAM a_ton = 0.03
.PARAM Iil_STB = 10p
.PARAM Iih_STB = 10p


.MODEL MOS_N  NMOS LEVEL=1  VTO=+0.65  KP=500E-6 
.MODEL DIODE_NOVd D LEVEL=1  IS=10E-15 N=0.001
.MODEL DIODE_VLIM D LEVEL=1  IS=0.8E-15   
.MODEL DIODE_ILIM D LEVEL=1  IS=0.8E-15  
.MODEL DX D LEVEL=1  IS=1E-14 
.MODEL SW_LEAK     VSWITCH  VON={VIH_STB}  VOFF={VIL_STB}  RON=1T  ROFF={2.5/Iout_leak_STB -2e3}
.MODEL SW_OUT      VSWITCH  VON={VIH_STB}  VOFF={VIL_STB}  RON=1m  ROFF=1T
.MODEL SW_VB2_VS   VSWITCH  VON={VIH_STB}  VOFF={VIL_STB}  RON=1T  ROFF=1m
.MODEL SW_VB_VREF  VSWITCH  VON={VIH_STB}  VOFF={VIL_STB}  RON=1T  ROFF=1m
*
*******************************************************************************
